package com.ry.novel.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ry.novel.model.dto.BookInfo;
import com.ry.novel.model.dto.condition.BookQuery;
import com.ry.novel.model.dto.condition.BookRankListQuery;
import com.ry.novel.model.dto.condition.CommonQuery;

import java.util.List;
import java.util.Map;

/**
 * 书本的service
 * @author ry
 * @since 2022-01-23 09:53
 **/
public interface BookService {
    /**
     * 发布一本小说
     * @param info
     */
    void addBook(BookInfo info);

    /**
     * 删除小说，校验一下是不是本人删除的
     * @param id
     */
    void deleteById(Long id);

    /**
     * 修改小说信息，校验一下是不是本人修改的
     */
    void updateBook(BookInfo info);

    /**
     * 分页查询小说接口
     * @param bookQuery
     * @return
     */
    Page<BookInfo> searchByPage(BookQuery bookQuery);

    /**
     * 根据id查询一本小说
     * @param id
     * @return
     */
    BookInfo queryById(Long id);

    void addBookVisitCount(Long bookId);

    /**
     * 排行榜 0点击榜 1新书榜 2更新榜 3评论榜
     * @param
     * @return
     */
    Page<BookInfo> rankingList(BookRankListQuery bookRankListQuery);

    /**
     * 作家中心的列表
     * @param commonQuery
     * @return
     */
    Page<BookInfo> queryByAuthorId(CommonQuery commonQuery);

    /**
     * 读者主页
     * @return
     */
    Map<String, List<BookInfo>> readerIndex();

    /**
     * 根据书籍分类查询
     * @param bookQuery
     * @return
     */
    Page<BookInfo> queryBookByCategory(BookQuery bookQuery);

    /**
     * 根据排行榜类型查询
     * @param bookQuery
     * @return
     */
    Page<BookInfo> queryBookByRank(BookQuery bookQuery);
}
